package com.zmn.plat.common.dictionary;

/**
 * 平台字典：平台ID，平台名称，平台一级组织架构信息，平台默认子公司信息
 *
 * @author duanzuocai
 * @version v1.0
 * @since 2019-12-11 15:02
 */
public enum PlatEnum {
    /**
     * 川南环保
     */
    CNHB(40, "川南环保", 40000, 40000, 0, 0),
    /**
     * 一步生活
     */
    YBSH(30, "一步生活", 30000, 30000, 40033, 42243),
    /**
     * 啄木鸟
     */
    ZMN(10, "啄木鸟", 10000, 10000, 0, 0),
    /**
     * 言而有信
     */
    YEYX(20, "言而有信", 20000, 20000, 40031, 42242);

    /**
     * 平台ID
     */
    public final int value;

    /**
     * 平台一级组织架构ID
     */
    public final int organId;

    /**
     * 平台关联组织架构总公司ID
     */
    public final int headCompanyId;

    /**
     * 平台默认子公司ID
     */
    public final int subCompanyId;

    /**
     * 平台默认子公司对应组织架构ID：如果配置了子公司组织架构ID，则把服务商放到此子公司对应的组织架构下面
     */
    public final int subCompanyOrgId;

    /**
     * 平台名称
     */
    public final String name;

    public String getName() {
        return name;
    }

    PlatEnum(int value, String name, int organId, int headCompanyId, int subCompanyOrgId, int subCompanyId) {
        this.value = value;
        this.name = name;
        this.organId = organId;
        this.headCompanyId = headCompanyId;
        this.subCompanyOrgId = subCompanyOrgId;
        this.subCompanyId = subCompanyId;
    }

    /**
     * 获取平台
     *
     * @param plat 平台ID
     * @return
     */
    public static PlatEnum getEnumByPlat(int plat) {
        switch (plat) {
            case 40:
                return CNHB;
            case 30:
                return YBSH;
            case 10:
                return ZMN;
            case 20:
                return YEYX;
            default:
                return null;
        }
    }

    /**
     * 获取平台默认子公司组织ID
     *
     * @param plat 平台ID
     * @return
     */
    public static int getSubCompanyOrgIdByPlat(int plat) {
        switch (plat) {
            case 40:
                return CNHB.subCompanyOrgId;
            case 30:
                return YBSH.subCompanyOrgId;
            case 10:
                return ZMN.subCompanyOrgId;
            case 20:
                return YEYX.subCompanyOrgId;
            default:
                return 0;
        }
    }

    public static String getName(int value) {
        PlatEnum enumByPlat = getEnumByPlat(value);
        return enumByPlat == null ? null : enumByPlat.getName();
    }
}
